package com.cyan.note.service;

import com.cyan.note.dto.admin.ManagerCreateRequest;
import com.cyan.note.dto.admin.ManagerResponse;
import com.cyan.note.dto.admin.ManagerUpdateRequest;
import java.util.List;

/**
 * 超级管理员-店长管理服务接口
 * 严格遵循数据隔离原则 - 只能管理店长账户的系统信息
 * 
 * @author ZhangzhenYu
 * @since 2025-01-14
 */
public interface AdminManagerService {

    /**
     * 查询所有店长账户列表（仅系统信息）
     */
    List<ManagerResponse> getAllManagers();

    /**
     * 根据店铺ID查询店长账户
     */
    List<ManagerResponse> getManagersByShopId(Long shopId);

    /**
     * 根据账户状态查询店长列表
     */
    List<ManagerResponse> getManagersByStatus(String status);

    /**
     * 根据ID查询店长账户详情
     */
    ManagerResponse getManagerById(Long id);

    /**
     * 创建店长账户（仅系统账户）
     */
    ManagerResponse createManager(ManagerCreateRequest request);

    /**
     * 更新店长账户基本信息（仅系统信息）
     */
    ManagerResponse updateManager(ManagerUpdateRequest request);

    /**
     * 更新店长账户状态
     */
    boolean updateManagerStatus(Long id, String status);

    /**
     * 重置店长密码
     */
    boolean resetManagerPassword(Long id, String newPassword);

    /**
     * 删除店长账户（系统级删除）
     */
    boolean deleteManager(Long id);

    /**
     * 检查用户名是否已存在
     */
    boolean isUsernameExists(String username);

    /**
     * 检查用户名是否已存在（排除指定用户）
     */
    boolean isUsernameExists(String username, Long excludeId);
}